﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CrystalDecisions.Shared;
using CrystalDecisions.ReportSource;
using CrystalDecisions.CrystalReports.Engine;
using SVC_DAL;


namespace SVC.RELATORIOS
{
    public partial class frm_Relatorio : Form
    {
        public String controle = "";
        public DateTime? dataInicial;
        public DateTime? dataFinal;
        public int venda=0;
        public int produtoInicial = 0;
        public int produtoFinal = 0;
        public int codigo = 0;
        public String marca = "";
        public String grupo = "";
        public frm_Relatorio()
        {
            InitializeComponent();
        }


        //public static void CrystalReportLogOn(ReportDocument reportParameters,
        //                                  string serverName,
        //                                  string databaseName,
        //                                  string userName,
        //                                  string password)
        //{
        //    TableLogOnInfo logOnInfo;
        //    ReportDocument subRd;
        //    Sections sects;
        //    ReportObjects ros;
        //    SubreportObject sro;

        //    if (reportParameters == null)
        //    {
        //        throw new ArgumentNullException("reportParameters");
        //    }

        //    try
        //    {
        //        foreach (CrystalDecisions.CrystalReports.Engine.Table t in reportParameters.Database.Tables)
        //        {
        //            logOnInfo = t.LogOnInfo;
        //            logOnInfo.ReportName = reportParameters.Name;
        //            logOnInfo.ConnectionInfo.ServerName = serverName;
        //            logOnInfo.ConnectionInfo.DatabaseName = databaseName;
        //            logOnInfo.ConnectionInfo.UserID = userName;
        //            logOnInfo.ConnectionInfo.Password = password;
        //            logOnInfo.TableName = t.Name;
        //            t.ApplyLogOnInfo(logOnInfo);
        //            t.Location = t.Name;
        //        }
        //    }
        //    catch
        //    {
        //        throw;
        //    }

        //    sects = reportParameters.ReportDefinition.Sections;
        //    foreach (Section sect in sects)
        //    {
        //        ros = sect.ReportObjects;
        //        foreach (ReportObject ro in ros)
        //        {
        //            if (ro.Kind == ReportObjectKind.SubreportObject)
        //            {
        //                sro = (SubreportObject)ro;
        //                subRd = sro.OpenSubreport(sro.SubreportName);
        //                try
        //                {
        //                    foreach (CrystalDecisions.CrystalReports.Engine.Table t in subRd.Database.Tables)
        //                    {
        //                        logOnInfo = t.LogOnInfo;
        //                        logOnInfo.ReportName = reportParameters.Name;
        //                        logOnInfo.ConnectionInfo.ServerName = serverName;
        //                        logOnInfo.ConnectionInfo.DatabaseName = databaseName;
        //                        logOnInfo.ConnectionInfo.UserID = userName;
        //                        logOnInfo.ConnectionInfo.Password = password;
        //                        logOnInfo.TableName = t.Name;
        //                        t.ApplyLogOnInfo(logOnInfo);
        //                    }
        //                }
        //                catch
        //                {
        //                    throw;
        //                }
        //            }
        //        }
        //    }
        //}

        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if (keyData == Keys.Escape)
                this.Close();
            return base.ProcessCmdKey(ref msg, keyData);
        } 

        public void FonteDeDados(ReportDocument cryRpt)
        {
            //modificar a fonte de dados no load deste formulário

            TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
            TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
            ConnectionInfo crConnectionInfo = new ConnectionInfo();
            Tables CrTables;
            
            crConnectionInfo.ServerName = global.server;
            crConnectionInfo.DatabaseName = global.DatabaseName;
            crConnectionInfo.UserID = global.userid;
            crConnectionInfo.Password = global.password;
            if (crConnectionInfo.UserID == "" && crConnectionInfo.Password == "")
                crConnectionInfo.IntegratedSecurity = true;
            else
                crConnectionInfo.IntegratedSecurity = false;

            CrTables = cryRpt.Database.Tables;
            foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
            {
                crtableLogoninfo = CrTable.LogOnInfo;
                crtableLogoninfo.ConnectionInfo = crConnectionInfo;
                CrTable.ApplyLogOnInfo(crtableLogoninfo);
            }
        }

        private void frm_Relatorio_Load(object sender, EventArgs e)
        {
            try
            {            
                if (globalDAL.con == "Ricardo")
                {
                    //global.server = "192.168.0.110,1433";
                    //global.DatabaseName = "SVC";
                    //global.userid = "sa";
                    //global.password = "wfcrzo";
                    global.server = "DESKTOP-EBJ26VV";
                    global.DatabaseName = "SVC";
                    global.userid = "";
                    global.password = "";
                }
                else if (globalDAL.con == "William")
                {
                    global.server = "William";
                    global.DatabaseName = "SVC";
                    global.userid = "";
                    global.password = "";
                }
                else if (globalDAL.con == "Ricardo-Desktop")
                {
                    global.server = "Ricardo-PC";
                    global.DatabaseName = "SVC";
                    global.userid = "";
                    global.password = "";
                }
                else if (globalDAL.con == "Cliente")
                {
                    global.server = "192.168.0.103,1433";
                    global.DatabaseName = "SVC";
                    global.userid = "sa";
                    global.password = "wfcrzo";
                }
                else if (globalDAL.con == "Helder")
                {
                    global.server = "HELDER-NB\\SQLEXPRESS";
                    global.DatabaseName = "SVC";
                    global.userid = "";
                    global.password = "";
                }
                else if (globalDAL.con == "Marta")
                {
                    global.server = "AFONSOANDRADE\\SQLEXPRESS";
                    global.DatabaseName = "SVC";
                    global.userid = "";
                    global.password = "";
                }
            
                if (controle == "relClientesMaisComprou")
                {
                    relClientesMaisComprou rpt = new relClientesMaisComprou();
                    FonteDeDados(rpt);
                    rpt.SetParameterValue("@dataInicial", dataInicial);
                    rpt.SetParameterValue("@dataFinal", dataFinal);
                    cr.ReportSource = rpt;
                    cr.Refresh(); 
                }
                else if (controle == "Cupom Não Fiscal")
                {
                    MOVIMENTACOES.Cupom rpt = new MOVIMENTACOES.Cupom();
                    //rpt.SetDatabaseLogon(global.userid, global.password, global.server, global.DatabaseName);
                    FonteDeDados(rpt);
                    rpt.SetParameterValue("@venda", venda);
                    //rpt.RecordSelectionFormula = "";
                    //CrystalReportLogOn(rpt, global.server, global.DatabaseName, global.userid, global.password);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                //else if (controle == "Pimaco6089")
                //{
                //    RELATORIOS.Pimaco6089 rpt = new RELATORIOS.Pimaco6089();
                //    CrystalReportLogOn(rpt, global.server, global.DatabaseName, global.userid, global.password);
                //    cr.ReportSource = rpt;
                //}
                else if (controle == "Pimaco6287")
                {
                    RELATORIOS.Pimaco6287 rpt = new RELATORIOS.Pimaco6287();
                    //CrystalReportLogOn(rpt, global.server, global.DatabaseName, global.userid, global.password);
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "EntradaMercadoria")
                {
                    EntradaMercadoria rpt = new EntradaMercadoria();
                    //rpt.SetDatabaseLogon(global.userid, global.password, global.server, global.DatabaseName);
                    FonteDeDados(rpt);
                    rpt.SetParameterValue("@dataInicial", dataInicial);
                    rpt.SetParameterValue("@dataFinal", dataFinal);
                    //rpt.RecordSelectionFormula = "";
                    //CrystalReportLogOn(rpt, global.server, global.DatabaseName, global.userid, global.password);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "ClientesAtendidos")
                {
                    ClientesAtendidos rpt = new ClientesAtendidos();
                    //rpt.SetDatabaseLogon(global.userid, global.password, global.server, global.DatabaseName);
                    FonteDeDados(rpt);
                    rpt.SetParameterValue("@dataInicial", dataInicial);
                    rpt.SetParameterValue("@dataFinal", dataFinal);
                    //rpt.RecordSelectionFormula = "";
                    //CrystalReportLogOn(rpt, global.server, global.DatabaseName, global.userid, global.password);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "ProdutosVendidosPorCliente")
                {
                    ProdutosVendidosPorCliente rpt = new ProdutosVendidosPorCliente();
                    //rpt.SetDatabaseLogon(global.userid, global.password, global.server, global.DatabaseName);
                    FonteDeDados(rpt);
                    rpt.SetParameterValue("@produtoInicial", produtoInicial);
                    rpt.SetParameterValue("@produtoFinal", produtoFinal);
                    rpt.SetParameterValue("@dataInicial", dataInicial);
                    rpt.SetParameterValue("@dataFinal", dataFinal);
                    //rpt.RecordSelectionFormula = "";
                    //CrystalReportLogOn(rpt, global.server, global.DatabaseName, global.userid, global.password);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "Físico Financeiro (Compras)")
                {
                    FisicoFinanceiroCompras rpt = new FisicoFinanceiroCompras();
                    //CrystalReportLogOn(rpt, global.server, global.DatabaseName, global.userid, global.password);
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "Físico Financeiro (Vendas)")
                {
                    FisicoFinanceiroVendas rpt = new FisicoFinanceiroVendas();
                    //CrystalReportLogOn(rpt, global.server, global.DatabaseName, global.userid, global.password);
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "PosicaoEstoque")
                {
                    PosicaoEstoque rpt = new PosicaoEstoque();
                    //CrystalReportLogOn(rpt, global.server, global.DatabaseName, global.userid, global.password);
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "ContasAPagarEmAberto")
                {
                    ContasAPagarAberto rpt = new ContasAPagarAberto();
                    FonteDeDados(rpt);
                    rpt.SetParameterValue("@dataInicial", dataInicial);
                    rpt.SetParameterValue("@dataFinal", dataFinal);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "ContasAPagarPagas")
                {
                    ContasAPagarPago rpt = new ContasAPagarPago();
                    FonteDeDados(rpt);
                    rpt.SetParameterValue("@dataInicial", dataInicial);
                    rpt.SetParameterValue("@dataFinal", dataFinal);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "VendasCanceladas")
                {
                    VendasCanceladas rpt = new VendasCanceladas();
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "VendasPorBalconista")
                {
                    VendasPorBalconista rpt = new VendasPorBalconista();
                    FonteDeDados(rpt);
                    rpt.SetParameterValue("@codigoVendedor", codigo);
                    rpt.SetParameterValue("@dataInicial", dataInicial);
                    rpt.SetParameterValue("@dataFinal", dataFinal);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "ContasAReceber")
                {
                    ContasAReceber rpt = new ContasAReceber();
                    FonteDeDados(rpt);
                    rpt.SetParameterValue("@codigoCliente", codigo);
                    rpt.SetParameterValue("@dataInicial", dataInicial);
                    rpt.SetParameterValue("@dataFinal", dataFinal);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "Fechamento")
                {
                    Fechamento rpt = new Fechamento();
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }//Fechamento
                else if (controle == "rpt_Clientes")
                {
                    rpt_Clientes rpt = new rpt_Clientes();
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "rpt_Abertura")
                {
                    rpt_Abertura rpt = new rpt_Abertura();
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "rpt_Categoria")
                {
                    rpt_Categoria rpt = new rpt_Categoria();
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "rpt_Fechamento")
                {
                    rpt_Fechamento rpt = new rpt_Fechamento();
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "rpt_FormaPagamento")
                {
                    rpt_FormaPagamento rpt = new rpt_FormaPagamento();
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "rpt_Fornecedor")
                {
                    rpt_Fornecedor rpt = new rpt_Fornecedor();
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "rpt_Grupo")
                {
                    rpt_Grupo rpt = new rpt_Grupo();
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "rpt_Marcas")
                {
                    rpt_Marcas rpt = new rpt_Marcas();
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "rpt_Subgrupo")
                {
                    rpt_Subgrupo rpt = new rpt_Subgrupo();
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "rpt_Unidades")
                {
                    rpt_Unidades rpt = new rpt_Unidades();
                    FonteDeDados(rpt);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "ProdutosPorMarca")
                {
                    RELATORIOS.crProdutosPorMarca rpt = new RELATORIOS.crProdutosPorMarca();
                    FonteDeDados(rpt);
                    rpt.SetParameterValue("@marca", marca);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if(controle =="sp_CaixaPorLucratividade")
                {
                    sp_CaixaPorLucratividade rpt = new sp_CaixaPorLucratividade();
                    FonteDeDados(rpt);
                    rpt.SetParameterValue("@dataInicial", dataInicial);
                    rpt.SetParameterValue("@dataFinal", dataFinal);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "sp_CompraPorPeriodo")
                {
                    sp_CompraPorPeriodo1 rpt = new sp_CompraPorPeriodo1();
                    FonteDeDados(rpt);
                    rpt.SetParameterValue("@dataInicial", dataInicial);
                    rpt.SetParameterValue("@dataFinal", dataFinal);
                    rpt.SetParameterValue("@marca", marca);
                    rpt.SetParameterValue("@grupo", grupo);
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
                else if (controle == "Parcelas Em Atraso")
                {
                    ParcelasEmAtraso rpt = new ParcelasEmAtraso();
                    FonteDeDados(rpt);                    
                    cr.ReportSource = rpt;
                    cr.Refresh();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
        }
    }
}
